package Exercise;

import java.util.HashSet;

/**
 * Description：
 * Author: zhangc
 * Date：2017/8/3 16:00
 */
public class FirstRepeatChar {

    /**
     * 此题题目有些模棱两可，将题目的字符串都理解成字符串流更好一点。
     * 即从一个字符串流中，找出第一个重复的字符，这样表述就可以方便大家理解。
     * 理解简单遍历字符串并不可行。会采用Hash来做。
     */
    public static char findFirstRepeat(String A, int n) {
        HashSet<Character> set = new HashSet<>();
        for (int i = 0; i < A.length(); i++) {
            if (!set.add(A.charAt(i)))
                return A.charAt(i);
        }
        return ' ';
//        char[] charArray = A.toCharArray();
//        int[] hashChar = new int[ 256 ]; // ASCII 范围
//        for (int i = 0; i < charArray.length; i++) {
//            if (hashChar[ charArray[ i ] - '0' ] == 0) {
//                hashChar[ charArray[ i ] - '0' ] = 1;
//            } else {
//                return charArray[ i ];
//            }
//        }
//        return '\n';
//        int low = 0, high = A.length() - 1;
//        int temp;
//        boolean repeated;
//        while (low < high) {
//            repeated = false;
//            for (int i = low + 1; i < high; ++i) {
//                if (A.charAt(i) == A.charAt(low)) {
//                    repeated = true;
//                    break;
//                }
//            }
//            if (repeated)
//                return A.charAt(low);
//            low++;
//        }
//        return A.charAt(high);
    }

    public static void main(String[] args) {
        System.out.println(findFirstRepeat("kdbaaabbk", 11));
    }
}
